/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.folha.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Transient;

/**
 *
 * @author marceloml
 */
@Entity
@Table(name="grade_horaria_fp")
public class GradeHorariaFp implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Id    
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    @Column(name = "CD_GRADE_FP")
    private Integer id;   
    
    @Column(name = "CD_GRADE")
    private Integer id_grade;
    
    @ManyToOne
    @JoinColumn(name = "CD_TURMA")
    private Turma turma;       
    
    @ManyToOne
    @JoinColumn(name = "CD_DISCIPLINA")
    private Disciplina disciplina;       
    
    @ManyToOne
    @JoinColumn(name = "CD_PROFESSOR")
    private Professor professor;           
    
    @ManyToOne
    @JoinColumn(name = "CD_UNIDADE")
    private Unidade unidade;        
    
    @Column(name = "HORA_INI_ORI")
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date horaIniOri;    
    
    @Column(name = "HORA_FIM_ORI")
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date horaFimOri;    
    
    @Column(name = "HORA_INI")
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date horaIni;    
    
    @Column(name = "HORA_FIM")
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date horaFim;    
    
    @Column(name = "ATRASO")    
    @Temporal(javax.persistence.TemporalType.TIME)
    private Date atraso;        
    
    @Transient
    private String totHrs;    
    
    @Column(name = "DATA")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date data;       
    
    @Column(name = "TIPO_CONTRATO")
    private Integer tipoContrato;  
    
    @Column(name = "VALOR")
    private BigDecimal valor;
    
    @Column(name = "DT_ATUALIZACAO")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dt_atualizacao;          

    @Column(name = "CD_USUARIO_ATUALIZACAO")
    private Integer usuario_atualizacao;      


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public Disciplina getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(Disciplina disciplina) {
        this.disciplina = disciplina;
    }

    public Professor getProfessor() {
        return professor;
    }

    public void setProfessor(Professor professor) {
        this.professor = professor;
    }

    public Unidade getUnidade() {
        return unidade;
    }

    public void setUnidade(Unidade unidade) {
        this.unidade = unidade;
    }

    public Date getHoraIni() {
        return horaIni;
    }

    public void setHoraIni(Date horaIni) {
        this.horaIni = horaIni;
    }

    public Date getHoraFim() {
        return horaFim;
    }

    public void setHoraFim(Date horaFim) {
        this.horaFim = horaFim;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public Integer getTipoContrato() {
        return tipoContrato;
    }

    public void setTipoContrato(Integer tipoContrato) {
        this.tipoContrato = tipoContrato;
    }

    public BigDecimal getValor() {        
        
        return valor;
        
    }

    public void setValor(BigDecimal valor) {
                
        this.valor = valor;        
                
    }

    public Date getDt_atualizacao() {
        return dt_atualizacao;
    }

    public void setDt_atualizacao(Date dt_atualizacao) {
        this.dt_atualizacao = dt_atualizacao;
    }

    public Integer getUsuario_atualizacao() {
        return usuario_atualizacao;
    }

    public void setUsuario_atualizacao(Integer usuario_atualizacao) {
        this.usuario_atualizacao = usuario_atualizacao;
    }

    public String getTotHrs() {

        String dStart = "01/01/2013 " + String.valueOf(horaIni);
        String dStop = "01/01/2013 " + String.valueOf(horaFim);

        SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

        Date d1 = null;
        Date d2 = null;

        try{
        d1 = fmt.parse(dStart);
        d2 = fmt.parse(dStop);

        long difference = d2.getTime() - d1.getTime();
        
        long minutes = difference / (60 * 1000) % 60;
        long hours = difference / (60 * 60 * 1000) % 24;
                
        totHrs = String.valueOf(hours) + ":" + String.valueOf(minutes);
        
        if (hours < 10 && minutes < 10) {
            totHrs = "0" + String.valueOf(hours) + ":" + "0" + String.valueOf(minutes);  
        }
        else if (hours < 10 && minutes >= 10) {
            totHrs = "0" + String.valueOf(hours) + ":" + String.valueOf(minutes);  
        }
        else if (hours >= 10 && minutes < 10) {
            totHrs = String.valueOf(hours) + ":" + "0" + String.valueOf(minutes);  
        }
        
        } catch (Exception e) {
         
        }

        
        return totHrs;        
        
    }

    public void setTotHrs(String totHrs) {
        this.totHrs = totHrs;
    }

    public Date getAtraso() {
        return atraso;
    }

    public void setAtraso(Date atraso) {
        this.atraso = atraso;
    }

    public Date getHoraIniOri() {
        return horaIniOri;
    }

    public void setHoraIniOri(Date horaIniOri) {
        this.horaIniOri = horaIniOri;
    }

    public Date getHoraFimOri() {
        return horaFimOri;
    }

    public void setHoraFimOri(Date horaFimOri) {
        this.horaFimOri = horaFimOri;
    }

    public Integer getId_grade() {
        return id_grade;
    }

    public void setId_grade(Integer id_grade) {
        this.id_grade = id_grade;
    }
    
}